package model;

import java.util.ArrayList;
import java.util.Objects;

public class UnidadeModel implements IUnidade{
    
    private int codigo;
    private String descricao;
    private ArrayList observers;
    private static UnidadeModel instance = null;

    public synchronized static UnidadeModel getInstance(){
        if (instance == null) {
            instance = new UnidadeModel();
        }
        return instance;
    }
        
    public UnidadeModel(){
        observers = new ArrayList();      
    }
    
    public UnidadeModel(int codigo, String descricao) {
        this.codigo = codigo;
        this.descricao = descricao;        
        //notificarObservers();
    }     

    @Override
    public String toString() {
        return "UnidadeModel{" + "codigo=" + codigo + ", descricao=" + descricao + '}';
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final UnidadeModel other = (UnidadeModel) obj;
        if (this.codigo != other.codigo) {
            return false;
        }
        if (!Objects.equals(this.descricao, other.descricao)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 41 * hash + this.codigo;
        hash = 41 * hash + Objects.hashCode(this.descricao);
        return hash;
    }
    
    //<editor-fold defaultstate="collapsed" desc="GET E SET METODOS">    
    public int getCodigo() {
        return codigo;
    }
    
   
    public void setCodigo(int codigo) {
        this.codigo = codigo;
        
    }
    
    @Override
    public String getDescricao() {
        return descricao;
        
    }
    
    @Override
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    //</editor-fold>
             
    //<editor-fold defaultstate="collapsed" desc="OBSERVER">
    @Override
    public void registrarObserver(Observer o) {
        observers.add(o);
    }
    
    @Override
    public void removerObserver(Observer o) {
        int i = observers.indexOf(o);
        if (i >= 0){
            observers.remove(i);
        }
    }
    
    @Override
    public void notificarObservers() {
        for (int i = 0;i < observers.size();i++){
            Observer observer = (Observer) observers.get(i);
            observer.update();
        }
    }
    //</editor-fold>
   
     
}

